| default | student | balance | income | |
|---|---|---|---|---|
| 0 | No | No | 729.526495 | 44361.625074 |
| 1 | No | Yes | 817.180407 | 12106.134700 |
| 2 | No | No | 1073.549164 | 31767.138947 |
Técnicas de Clasificación
13 de diciembre de 2024
Como fue expuesto en el módulo anterior, los modelos de regresión lineal asumen que la variable respuesta \(Y\) es cuantitativa. Sin embargo, en muchas situaciones prácticas, la variable en estudio es de tipo cualitativa (también referida como categórica).
Ejemplos:
Una persona llega a la sala de emergencias con un conjunto de síntomas que podrían atribuirse a una de tres condiciones médicas. ¿Cuál de las tres condiciones tiene el individuo?
Un servicio de banca en línea debe ser capaz de determinar si una transacción realizada en el sitio es fraudulenta, en función de la dirección IP del usuario, el historial de transacciones anteriores, entre otros factores.
Al igual que en las regresiones, en el contexto de clasificación tenemos un conjunto de observaciones de entrenamiento: \[(x_1, y_1), \dots, (x_n, y_n),\]
que podemos usar para construir un clasificador. Queremos que nuestro clasificador tenga un buen desempeño no sólo en los datos de entrenamiento, sino también en observaciones de prueba que no se utilizaron para entrenar el clasificador.
| default | student | balance | income | |
|---|---|---|---|---|
| 0 | No | No | 729.526495 | 44361.625074 |
| 1 | No | Yes | 817.180407 | 12106.134700 |
| 2 | No | No | 1073.549164 | 31767.138947 |
Supongamos que la clasificación de mora la codificamos como:
\[Y= \begin{cases} 0 \quad \text{si} \quad \texttt{default=No} \\ 1 \quad \text{si} \quad \texttt{default=Yes} \end{cases} \]
¿Podríamos realizar una regresión lineal de \(Y\) respecto de \(X\) y clasificar como \(\texttt{Yes}\) si \(\widehat{Y}>0.5\)?
En el caso de una respuesta binaria, la regresión lineal es un buen clasificador, y es equivalente a realizar un análisis discriminante lineal
Debido a que en la población (de datos), \[\mathbb{E}(Y| X = x)= \mathbb{P}(Y=1 | X=x),\] se podría pensar que la regresión es un modelo ideal para este tipo de tareas.
Sin embargo, la regresión lineal podría producir probabilidades fuera del rango \([0,1]\). Así, la regresión logística es un modelo más apropiado.
Por simplicidad escribamos \(p(X)=\mathbb{P}(Y=1 | X)\) y consideremos la variable balance para predecir si hubo mora (default). El modelo de regresión tiene por forma:
\[p(X)=\dfrac{\exp(\beta_0 + \beta_1 X)}{1+\exp(\beta_0 + \beta_1 X)}\]
Es claro ver, que independiente de los valores de \(\beta_0,\beta_1\) o \(X\), \(p(X)\) tomará valores en el intervalo \([0,1]\). La expresión anterior la podemos reordenar como:
\[\ln\left( \dfrac{p(X)}{1-p(X)}\right)=\beta_0 + \beta_1 X\]
Los coeficiente \(\beta_0\) y \(\beta_1\) en la ecuación
\[ p(X)=\dfrac{\exp(\beta_0 + \beta_1 X)}{1+\exp(\beta_0 + \beta_1 X)} \]
son desconocidos, por lo que deben ser estimados basándose en los datos de entrenamiento.
Usualmente la metodología de máxima verosimilitud es preferida para el proceso de estimación, debido a que tiene buenas propiedades estadísticas.
Formalmente, definimos la función de verosimilitud como:
\[ \ell(\beta_0,\beta_1)=\prod_{i:y_i=1}p(x_i)\prod_{i':y_{i'}=0}(1-p(x_{i'})) \]
Las estimaciones \(\hat{\beta}_0\) y \(\hat{\beta}_1\) son escogidos para maximizar la función de verosimilitud.
pythonpython Logit Regression Results
==============================================================================
Dep. Variable: default No. Observations: 10000
Model: Logit Df Residuals: 9998
Method: MLE Df Model: 1
Date: Wed, 11 Dec 2024 Pseudo R-squ.: 0.4534
Time: 12:10:49 Log-Likelihood: -798.23
converged: True LL-Null: -1460.3
Covariance Type: nonrobust LLR p-value: 6.233e-290
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
const -10.6513 0.361 -29.491 0.000 -11.359 -9.943
balance 0.0055 0.000 24.952 0.000 0.005 0.006
==============================================================================
Possibly complete quasi-separation: A fraction 0.13 of observations can be
perfectly predicted. This might indicate that there is complete
quasi-separation. In this case some parameters will not be identified.
¿Cuál es la probabilidad de mora (default) para alguien que tiene un balance de $1000?
\[ \hat{p}(X)=\dfrac{\exp(-10.6513+ 0.0055 \times 1000)}{1+\exp(-10.6513+ 0.0055 \times 1000)}\approx 0.006 \]
¿Cuál es la probabilidad de mora (default) para alguien que tiene un balance de $2000?
\[ \hat{p}(X)=\dfrac{\exp(-10.6513+ 0.0055 \times 2000)}{1+\exp(-10.6513+ 0.0055 \times 2000)}\approx 0.586 \]
student? Logit Regression Results
==============================================================================
Dep. Variable: default No. Observations: 10000
Model: Logit Df Residuals: 9998
Method: MLE Df Model: 1
Date: Wed, 11 Dec 2024 Pseudo R-squ.: 0.004097
Time: 12:10:50 Log-Likelihood: -1454.3
converged: True LL-Null: -1460.3
Covariance Type: nonrobust LLR p-value: 0.0005416
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
const -3.5041 0.071 -49.554 0.000 -3.643 -3.366
student 0.4049 0.115 3.520 0.000 0.179 0.630
==============================================================================
\[ \mathbb{P}\left( \text{default=Yes }| \text{ student=Yes}\right)=\dfrac{\exp(-3.5041+ 0.4049 \times 1)}{1+\exp(-3.5041+ 0.4049 \times 1)}\approx 0.0431 \]
\[ \mathbb{P}\left( \text{default=Yes }| \text{ student=No}\right)=\dfrac{\exp(-3.5041+ 0.4049 \times 0)}{1+\exp(-3.5041+ 0.4049 \times 0)}\approx 0.0292 \]
Ahora consideremos el problema de predecir una respuesta binaria usando múltiples predictores. La extensión natural del modelo de regresión es
\[ \log \left(\dfrac{p(X)}{1-p(X)}\right)=\beta_0 + \beta_1 X_1 +\dots + \beta_p X_p \]
donde \(X=(X_1,\dots,X_p)\) son \(p\) predictores. La ecuación anterior la podemos reescribir como
\[ p(X)=\dfrac{\exp(\beta_0 + \beta_1 X_1 +\dots + \beta_p X_p)}{1+ \exp(\beta_0 + \beta_1 X_1 +\dots + \beta_p X_p)} \]
X = Default[['student', 'balance', 'income']]
X = sm.add_constant(X)
y = Default['default']
model = sm.Logit(y, X)
result = model.fit()
print(result.summary())Optimization terminated successfully.
Current function value: 0.078577
Iterations 10
Logit Regression Results
==============================================================================
Dep. Variable: default No. Observations: 10000
Model: Logit Df Residuals: 9996
Method: MLE Df Model: 3
Date: Wed, 11 Dec 2024 Pseudo R-squ.: 0.4619
Time: 12:10:50 Log-Likelihood: -785.77
converged: True LL-Null: -1460.3
Covariance Type: nonrobust LLR p-value: 3.257e-292
==============================================================================
coef std err z P>|z| [0.025 0.975]
------------------------------------------------------------------------------
const -10.8690 0.492 -22.079 0.000 -11.834 -9.904
student -0.6468 0.236 -2.738 0.006 -1.110 -0.184
balance 0.0057 0.000 24.737 0.000 0.005 0.006
income 3.033e-06 8.2e-06 0.370 0.712 -1.3e-05 1.91e-05
==============================================================================
Possibly complete quasi-separation: A fraction 0.15 of observations can be
perfectly predicted. This might indicate that there is complete
quasi-separation. In this case some parameters will not be identified.
La regresión logística involucra modelar directamente \(\mathbb{P}\left( Y=k|X=x\right)\) usando la función logística dada por
\[ p(X)=\dfrac{\exp(\beta_0 + \beta_1 X_1 +\dots + \beta_p X_p)}{1+ \exp(\beta_0 + \beta_1 X_1 +\dots + \beta_p X_p)} \]
para el caso de dos clases en la variable respuesta. En lo que sigue, consideramos una manera alternativa y menos directa para estimar estas probabilidades.
En esta metodología, modelamos la distribución de los predictores \(X\) por separado en cada una de las categorías de la variable respuesta \((Y)\), y luego usamos el teorema de Bayes para convertir estos resultados en estimaciones de \(\mathbb{P}\left(Y=k|X=x\right)\).
Teorema de Bayes \[\mathbb{P}(Y=k|X=x)=\dfrac{\mathbb{P}(X=x|Y=k)\times \mathbb{P}(Y=k)}{\mathbb{P}(X=x)} \]
Para las metodologías de análisis discriminante, reescribimos el Teorema de Bayes como:
\[\mathbb{P}(Y=k|X=x)=\dfrac{\pi_k f_k(x)}{\sum_{l=1}^{K}\pi_l f_l(x)},\]
donde:
\(f_k(x)=\mathbb{P}(X=x|Y=k)\) es la densidad para \(X\) en la clase \(k\).
\(\pi_k = \mathbb{P}(Y=k)\) es la probabilidad marginal o apriori para la clase \(k\).
La idea general, es no estimar \(p_k(X)\) directamente, sino estimar \(\pi_k\) y \(f_k\) para obtener lo deseado.
Usualmente \(\pi_k\) es fácil de obtener si se tiene una muestra aleatoria de \(Y\), pues obtenemos estas estimaciones como las proporciones de cada clase.
Estimar \(f_k(X)\) tiende a ser más difícil, a menos que se asuman formas simples para las densidades.
Primero asumiremos que \(p=1\), es decir, sólo tenemos un predictor. Deseamos obtener una estimación para \(f_k(x)\) para utilizarlo en la ecuación
\[ \mathbb{P}(Y=k|X=x)=\dfrac{\pi_k f_k(x)}{\sum_{l=1}^{K} \pi_l f_l(x)} \]
y así poder estimar \(p_k(x)\). Para poder estimar \(f_k\) asumiremos que es Gaussiana. Por lo que,
\[ f_k(x)=\dfrac{1}{\sqrt{2\pi}\sigma_k}\exp\left( -\dfrac{1}{2\sigma_{k}^{2}}(x-\mu_k)^2\right) \]
donde \(\mu_k\) y \(\sigma_{k}^{2}\) son la media y la varianza de la clase \(k-\)ésima. Por ahora, asumiremos que \(\sigma_{1}^{2}=\dots=\sigma_{K}^{2}=\sigma^2\)
Por lo anterior, se tendrá
\[ \mathbb{P}(Y=k|X) = p_k(x)=\dfrac{\pi_k \dfrac{1}{\sqrt{2\pi}\sigma}\exp\left( -\dfrac{1}{2\sigma^{2}}(x-\mu_k)^2\right)}{\sum_{l=1}^{K}\pi_l\dfrac{1}{\sqrt{2\pi}\sigma}\exp\left( -\dfrac{1}{2\sigma^{2}}(x-\mu_l)^2\right) } \]
El clasificador Bayesiano asigna una observacion \(X=x\) a la clase que su \(p_k(x)\) es más grande. Si arreglamos términos en la expresión anterior, se tiene que el proceso es equivalente a asignar la observación a la clase en la que
\[ \delta_k(x)=x \dfrac{\mu_k}{\sigma^2}-\dfrac{\mu_{k}^{2}}{2\sigma^2}+\log \pi_k \]
es más grande.
Por ejemplo, si \(K=2\) Y \(\pi_1=\pi_2\), entonces el clasificador Bayesiano asigna una observación a la clase 1 si: \[2x(\mu_1-\mu_2)>\mu_{1}^{2}-\mu_{2}^{2},\]
y a la clase 2 en caso contrario. En este caso, el límite de decisión de Bayes (Bayes decision boundary) corresponde al punto donde
\[ x=\dfrac{\mu_{1}^{2}-\mu_{2}^{2}}{2(\mu_1-\mu_2)}=\dfrac{\mu_1+\mu_2}{2} \]
Llamamos a este, el punto (o área) en donde la clasificación es ambigua.
El análisis discriminante lineal (LDA) aproxima el clasificador bayesiano ingresando las siguientes estimaciones:
\[ \hat{\pi}_k = \dfrac{n_k}{n} \]
\[ \hat{\mu}_k=\dfrac{1}{n_k}\sum_{i:y_i=k}x_i \]
\[ \hat{\sigma}^{2}=\dfrac{1}{n-K}\sum_{k=1}^{K}\sum_{i:y_i=K}(x_i-\hat{\mu}_k)^2 \]
donde \(n\) es el número total de observaciones en el conjunto de entrenamiento, \(n_k\) es el número de observaciones en el conjunto de entrenamiento en la clase \(k-\)ésima.
Densidad: \(f(x) = \frac{1}{(2\pi)^{p/2} |\Sigma|^{1/2}} e^{-\frac{1}{2} (x - \mu)^T \Sigma^{-1} (x - \mu)}\)
Función discriminante: \(\delta_k(x) = x^T \Sigma^{-1} \mu_k - \frac{1}{2} \mu_k^T \Sigma^{-1} \mu_k + \log \pi_k\)
\[ \mathbb{P}(Y=k|X=x)=\dfrac{\pi_k f_k(x)}{\sum_{l=1}^{K} \pi_l f_l(x)} \]
Cuando \(f_k(x)\) son distribuciones Gaussianas, con la misma matriz de covarianza en cada clase, obtenemos el Análisis Discriminante Lineal (LDA). Si alteramos la forma de \(f_k(x)\), obtendremos diferentes clasificadores:
Con distribuciones Gaussianas pero diferentes \(\Sigma_k\) en cada clase, obtendremos el Análisis Discriminante Cuadrático (QDA)
Con \(f_k(x)=\prod_{j=1}^{p} f_{jk}(x_j)\) en cada clase obtendremos Naive Bayes
Muchas otras formas se pueden obtener al proponer modelos de densidad para \(f_k(x)\).
\[ \delta_k(x) = -\frac{1}{2} (x - \mu_k)^T \Sigma_k^{-1} (x - \mu_k) + \log \pi_k - \frac{1}{2} \log |\Sigma_k| \]
Debido a que \(\mathbf{\Sigma_k}\) son diferentes, el término al cuadrado importa.
Asume que los predictores (\(X\)) son independientes en cada clase.
Útil cuando \(p\) es grande, ya que los métodos multivariados como LDA o QDA son ineficientes.
Acepta predictores cualitativos y cuantitativos.
A pesar de tener muchos supuestos, Naive Bayes usualmente entrega buenas clasificaciones.